home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Skunkware 5
/
Skunkware 5.iso
/
src
/
Tools
/
pidentd
/
SCO-PATCH
< prev
Wrap
Text File
|
1995-07-30
|
3KB
|
115 lines
*** pidentd-2.6.1/src/kernel/sco32_42+5.c Mon Jun 5 08:03:22 1995
--- pidentd-2.6.1+/src/kernel/sco32_42+5.c Sun Jul 30 06:52:52 1995
***************
*** 30,35 ****
--- 30,45 ----
* 4. This notice may not be removed or altered.
*/
+ /*
+ * MODIFICATION HISTORY
+ *
+ * 95/06/05 created by Victor A. Abell <abe@cc.purdue.edu>
+ *
+ * 95/07/30 modified by Bela Lubkin <belal@sco.com>
+ * -- Added code to find the real socket head, which may be hidden
+ * behind an in-kernel rlogind/telnetd stream head.
+ */
+
#include <stdio.h>
#include <fcntl.h>
#include <nlist.h>
***************
*** 65,70 ****
--- 75,86 ----
#include <sys/net/route.h>
#include <sys/netinet/in_pcb.h>
+ #if sco>=500
+ #define _INKERNEL
+ #include <sys/net/iknt.h>
+ #undef _INKERNEL
+ #endif
+
/*
* This confusing sequence of redefinitions of xdevmap allows the sizing
* of the copy of the kernel's xdevmap[] table to be dynamic, based on the
***************
*** 137,142 ****
--- 153,163 ----
{ "xdevmap", 0, 0, 0, 0, 0 },
#define X_XDEV 6
+ #if sco>=500
+ { "ikntrinit", 0, 0, 0, 0, 0 },
+ #define X_IKNTR 7
+ #endif /* sco>=500 */
+
{ NULL, 0, 0, 0, 0, 0 }
};
***************
*** 167,172 ****
--- 188,196 ----
ERROR1("main: nlist(%s)", N_UNIX);
for (err = i = 0; Nl[i].n_name; i++) {
if (Nl[i].n_value == (long)NULL) {
+ #if sco>=500
+ if (i == X_IKNTR) continue; /* Ok if not linked in */
+ #endif /* sco>=500 */
if (syslog_flag)
syslog(LOG_ERR, "no kernel address for %s",
Nl[i].n_name);
***************
*** 271,276 ****
--- 295,303 ----
struct queue *q, qb;
off_t sa, spa;
struct user *u;
+ #if sco>=500
+ iknt_t ikb;
+ #endif /* sco>=500 */
/*
* Search the kernel's TCP control block chain for one whose local and foreign
* addresses match.
***************
*** 297,302 ****
--- 324,341 ----
if (kread((off_t)q, (char *)&qb, sizeof(qb)))
return(-1);
}
+ #if sco>=500
+ /*
+ * If this is an in-kernel rlogind/telnetd stream head, follow
+ * its private pointer back to the original stream head which
+ * actually contains the socket address.
+ */
+ if (qb.q_qinfo && qb.q_qinfo == (struct qinit *)Nl[X_IKNTR].n_value) {
+ if (kread((off_t)qb.q_ptr, (char *)&ikb, sizeof(ikb)))
+ return(-1);
+ qb.q_ptr = ikb.ik_oqptr;
+ }
+ #endif /* sco>=500 */
if (qb.q_ptr == (caddr_t)NULL)
return(-1);
/*
*** pidentd-2.6.1/Makefile Mon Jun 5 13:49:08 1995
--- pidentd-2.6.1+/Makefile Sat Jul 29 17:44:19 1995
***************
*** 344,350 ****
#
sco32_5:
@echo "Building for SCO 3.2v5.0.0..."
! @(cd src ; $(MAKE) CC="$(CC)" LDFLAGS="$(LDFLAGS)" LIBS="$(GLIBS) -lsocket -lc_s" CFLAGS="$(CFLAGS) -Dsco=500 $(GDEFS)" MAKE=$(MAKE) KSRC=sco32_42+5 in.identd)
#
# For Sony MIPS BSD...
--- 344,350 ----
#
sco32_5:
@echo "Building for SCO 3.2v5.0.0..."
! @(cd src ; $(MAKE) CC="$(CC)" LDFLAGS="$(LDFLAGS) -belf" LIBS="$(GLIBS) -lsocket " CFLAGS="$(CFLAGS) -O3 -Kspace -Dsco=500 $(GDEFS)" MAKE=$(MAKE) KSRC=sco32_42+5 in.identd)
#
# For Sony MIPS BSD...